<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="animate.js"></script>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        li {
            list-style: none;
        }

        a {
            text-decoration: none;
        }

        .focus {
            position: relative;
            float: left;
            width: 721px;
            height: 455px;
            margin: 10px;
            margin-left: 219px;
            overflow: hidden;
        }

        .focus:hover {
            cursor: pointer;
        }

        /* 焦点图 左箭头 */
        .focus .left-arrow {
            display: none;
            position: absolute;
            top: 50%;
            left: 0;
            width: 37px;
            height: 37px;
            background-color: rgba(0, 0, 0, .3);
            border-bottom-right-radius: 25px;
            border-top-right-radius: 25px;
            /* text-align: center; */
            line-height: 34px;
            color: #fff;
            font-size: 32px;
            z-index: 888;
        }

        /* 焦点图 右箭头 */
        .focus .rigth-arrow {
            display: none;
            position: absolute;
            top: 50%;
            right: 0;
            width: 37px;
            height: 37px;
            background-color: rgba(0, 0, 0, .3);
            border-bottom-left-radius: 25px;
            border-top-left-radius: 25px;
            /* text-align: center; */
            line-height: 34px;
            color: #fff;
            font-size: 32px;
            padding-left: 12px;
            z-index: 888;
        }

        /* 焦点图 */
        .focus .biao {
            position: relative;
            z-index: 998;
        }

        .focus .biao .biao-lis {
            position: absolute;
            top: 429px;
            left: 40px;
            z-index: 999;
        }

        .focus .biao .biao-lis li {
            float: left;
            width: 12px;
            height: 12px;
            /* background-color: #fff; */
            border-radius: 10px;
            margin: 4px;
            border: 1px solid #fff
        }

        /* 不够宽 先给ul 设足够的宽 */
        .focus .lun-tu {
            position: absolute;
            top: 0;
            left: 0;
            width: 500%;
        }

        /* 够宽后 浮动小 li */
        .focus .lun-tu li {
            float: left;
        }

        .current {
            background-color: #fff;
        }
    </style>
</head>

<body>
    <div class="focus">
        <!-- 左侧按钮 -->
        <a href="#" class="left-arrow">
            &lt;
        </a>
        <a href="#" class="rigth-arrow">
            &gt;
        </a>
        <!-- 焦点图下标 -->
        <div class="biao">
            <ul class="biao-lis">
                <!-- <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>  动态生成-->
            </ul>
        </div>
        <!-- 轮播图 必须用 li 做 -->
        <ul class="lun-tu">
            <li><img src="images/focus.jpg" alt=""></li>
            <li><img src="images/focus1.jpg" alt=""></li>
            <li><img src="images/focus2.jpg" alt=""></li>
            <li><img src="images/focus3.jpg" alt=""></li>
            <!-- 复制第一个li， -->
            <!-- <li><img src="images/focus.jpg" alt=""></li> 删掉，使用克隆更灵活 -->

        </ul>
    </div>
    <script>
        var leftarrow = document.querySelector('.left-arrow');
        var rigtharrow = document.querySelector('.rigth-arrow');
        var biao = document.querySelector('.biao');
        var focus = document.querySelector('.focus');
        var focusWidth = focus.offsetWidth;
        // 1. 箭头显示与隐藏
        focus.addEventListener('mouseenter', function () {
            leftarrow.style.display = 'block';
            rigtharrow.style.display = 'block';
            // 11.2 清除定时器
            clearInterval(timer);
            timer = null; // 清除定时器变量
        });
        focus.addEventListener('mouseleave', function () {
            leftarrow.style.display = 'none';
            rigtharrow.style.display = 'none';
            // 11.3 离开时再调用点击事件
            timer = setInterval(function () {
                rigtharrow.click();
            }, 2000)
        });
        // 2.生成 动态小li
        var ul = document.querySelector('.lun-tu');
        var biaolis = document.querySelector('.biao-lis');
        for (var i = 0; i < ul.children.length; i++) {
            // 2.1 创建 小li
            var li = document.createElement('li');
            // 4.2 通过自定义属性 设置小圆圈的索引号
            li.setAttribute('index', i);
            //    2.2 把小li 插入到 biao-lis中
            biaolis.appendChild(li);
            // 3. 在创建小li 时， 同时点击
            // 小圆圈 排他思想  清除类名
            li.addEventListener('click', function () {
                // 干掉所有人
                for (var i = 0; i < biaolis.children.length; i++) {
                    biaolis.children[i].className = '';
                }
                // 留下自己
                this.className = 'current';
                // 4.点击圆圈 移动图片
                // 4.3 当点击了某个小li，就拿到 当前小li的 索引号
                var index = this.getAttribute('index');
                // 8.1 当我们点击了某个小li，就拿到当前小li 的索引号 给 num
                num = index;
                // 8.2 当我们点击了某个小li，就拿到当前小li 的索引号 给 circle
                circle = index;

                console.log(index);
                // 4.1 ul的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是负值
                // var focusWidth = focus.offsetWidth;  移到前面，因为左右箭头也会用到
                console.log(focusWidth);
                // 4.4 最后添加动画
                // animate(obj,target,callback)
                animate(ul, - index * focusWidth);
            })
        }
        // 2.3 把 下标的 小li 的第一个li 设置类名为 current
        biaolis.children[0].className = 'current';
        // 6.克隆第一张图片 放最后个小li
        var first = ul.children[0].cloneNode(true); //深克隆
        ul.appendChild(first);

        // 5. 右箭头点击触发动画
        var num = 0;
        // 7. circle 控制小圆圈变化
        var circle = 0;
        rigtharrow.addEventListener('click', function () {
            // 如果走到了 最后一张图， 此时， ul要快速复原 left 改为 0
            if (num == ul.children.length - 1) {
                ul.style.left = 0;
                num = 0;
            }
            num++;
            animate(ul, - num * focusWidth);
            // 7.2 每点击一次就变化
            circle++;
            // 7.3 如果 circle == 4 说明走到了最后克隆的图，此时应该复原
            if (circle == 4) {
                circle = 0;
            }
            // // 排他
            // for (var i = 0; i < biaolis.children.length; i++) {
            //     biaolis.children[i].className = '';
            // }
            // // 留下当前 小圆圈的 current类名
            // biaolis.children[circle].className = 'current';         // 可封装一个函数
            circleChange();
        })

        // 9.左侧箭头做法
        leftarrow.addEventListener('click', function () {
            // 如果走到了 最后一张图， 此时， ul要快速复原 left 改为 0
            if (num == 0) {

                // 9.2 往左走 是最后一张图
                num = ul.children.length - 1;
                // 9.3快速跳最后图
                ul.style.left = - num * focusWidth + 'px';
            }
            // 9.1 往左走，--
            num--;
            animate(ul, - num * focusWidth);
            // 7.2 每点击一次就变化
            // 9.4 小圆圈也改变
            circle--;
            // 9.5 如果 circle < 0 说明第一张图片，小圆圈改为第四个小圆圈（3）
            if (circle < 0) {
                circle = biaolis.children.length - 1;
            }
            // // 排他
            // for (var i = 0; i < biaolis.children.length; i++) {
            //     biaolis.children[i].className = '';
            // }
            // // 留下当前 小圆圈的 current类名
            // biaolis.children[circle].className = 'current';        // 可封装一个函数
            circleChange();
        })
        // 10. 封装函数
        function circleChange() {
            // 排他
            for (var i = 0; i < biaolis.children.length; i++) {
                biaolis.children[i].className = '';
            }
            // 留下当前 小圆圈的 current类名
            biaolis.children[circle].className = 'current';
        }

        // 11.自动播放轮播图
        // 11.1
        var timer = setInterval(function () {
            // 手动调用点击事件
            rigtharrow.click();
        }, 2000)
    </script>
</body>

</html>